from django.core.management.base import BaseCommand
from django.db import transaction
from core.models import Tag

class Command(BaseCommand):
    help = '导入预定义的技术标签'

    def handle(self, *args, **options):
        # 预定义技术标签
        tech_tags = [
            {
                'slug': 'python',
                'name': 'Python',
                'description': 'Python编程语言相关文档',
                'color': '#3776AB',
                'icon': 'python',
                'order_index': 10
            },
            {
                'slug': 'django',
                'name': 'Django',
                'description': 'Django Web框架相关文档',
                'color': '#092E20',
                'icon': 'django',
                'order_index': 11
            },
            {
                'slug': 'java',
                'name': 'Java',
                'description': 'Java编程语言相关文档',
                'color': '#E76F00',
                'icon': 'java',
                'order_index': 20
            },
            {
                'slug': 'spring',
                'name': 'Spring',
                'description': 'Spring框架相关文档',
                'color': '#6DB33F',
                'icon': 'spring',
                'order_index': 21
            },
            {
                'slug': 'database',
                'name': '数据库',
                'description': '数据库相关文档',
                'color': '#336791',
                'icon': 'database',
                'order_index': 30
            },
            {
                'slug': 'mysql',
                'name': 'MySQL',
                'description': 'MySQL数据库相关文档',
                'color': '#4479A1',
                'icon': 'mysql',
                'order_index': 31
            },
            {
                'slug': 'redis',
                'name': 'Redis',
                'description': 'Redis缓存相关文档',
                'color': '#DC382D',
                'icon': 'redis',
                'order_index': 32
            },
            {
                'slug': 'linux',
                'name': 'Linux',
                'description': 'Linux系统相关文档',
                'color': '#FCC624',
                'icon': 'linux',
                'order_index': 40
            },
            {
                'slug': 'docker',
                'name': 'Docker',
                'description': 'Docker容器相关文档',
                'color': '#2496ED',
                'icon': 'docker',
                'order_index': 50
            },
            {
                'slug': 'kubernetes',
                'name': 'Kubernetes',
                'description': 'Kubernetes容器编排相关文档',
                'color': '#326CE5',
                'icon': 'kubernetes',
                'order_index': 51
            },
            {
                'slug': 'nginx',
                'name': 'Nginx',
                'description': 'Nginx服务器相关文档',
                'color': '#009639',
                'icon': 'nginx',
                'order_index': 60
            },
            {
                'slug': 'monitor',
                'name': '监控系统',
                'description': '系统监控相关文档',
                'color': '#E6522C',
                'icon': 'monitor',
                'order_index': 70
            },
            {
                'slug': 'prometheus',
                'name': 'Prometheus',
                'description': 'Prometheus监控相关文档',
                'color': '#E6522C',
                'icon': 'prometheus',
                'order_index': 71
            },
            {
                'slug': 'security',
                'name': '安全防护',
                'description': '安全相关文档',
                'color': '#D14836',
                'icon': 'security',
                'order_index': 80
            },
            {
                'slug': 'network',
                'name': '网络服务',
                'description': '网络服务相关文档',
                'color': '#00A1E0',
                'icon': 'network',
                'order_index': 90
            }
        ]

        self.stdout.write('开始导入技术标签...')
        
        try:
            with transaction.atomic():
                # 清理现有的技术标签
                Tag.objects.filter(type='tech').delete()
                self.stdout.write('已清理现有技术标签')
                
                # 导入新标签
                for tag_data in tech_tags:
                    try:
                        tag = Tag.objects.create(
                            type='tech',
                            **tag_data
                        )
                        self.stdout.write(self.style.SUCCESS(f'创建标签: {tag.name}'))
                    except Exception as e:
                        self.stdout.write(self.style.ERROR(f'创建标签 {tag_data["name"]} 失败: {str(e)}'))
                        raise

                self.stdout.write(self.style.SUCCESS(f'成功导入 {len(tech_tags)} 个技术标签'))
        except Exception as e:
            self.stdout.write(self.style.ERROR(f'导入过程中出错: {str(e)}'))
            raise 